測試於 PowerShell 5.1
dir 檔案 → 得到檔案
dir 資料夾 → 不是得到資料夾
而是得到資料夾裡的檔案和子資料夾
如果要得到資料夾本身,可以使用get-item
#得到檔案
PS R:\> (dir C:\Pic\1.jpg).FullName
C:\Pic\1.jpg
#得到資料夾裡的檔案和子資料夾
PS R:\> (dir C:\Pic\新增資料夾).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
#使用get-item
PS R:\> (gi C:\Pic\新增資料夾).FullName
C:\Pic\新增資料夾
#起始層:C:\Pic
#尋找:新*
PS R:\> (dir C:\Pic\新*).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
#新增「C:\Pic\新文字文件.txt」之後:
#起始層:C:\Pic
#尋找:新*
PS R:\> (dir C:\Pic\新*).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\新文字文件.txt
沒有特別之處
#C:\Pic裡面的情形
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
#起始層:C:\Pic
#尋找:全部
PS R:\> (dir C:\Pic -r).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#起始層:「C:\Pic\新增資料夾」、「C:\Pic\新增資料夾002」
# (起始層「資料夾」沒有列出)
#尋找:全部
PS R:\> (dir C:\Pic\* -r).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#新增「C:\Pic\1.jpg」之後:
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
#起始層:C:\Pic
#尋找:全部
PS R:\> (dir C:\Pic -r).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#起始層:C:\Pic
#尋找:全部
PS R:\> (dir C:\Pic\* -r).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
當使用 -r 參數
dir C:\Pic 的起始層:
都是:C:\Pic
dir C:\Pic\*
的起始層:
C:\Pic\*
全部都是資料夾:「新增資料夾」、「新增資料夾002」
以外情形:C:\Pic
#C:\Pic裡面的情形
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
#起始層:「新增資料夾」、「新增資料夾002」
# (起始層「資料夾」沒有列出)
#尋找:全部
PS R:\> (dir C:\Pic\新* -r).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#新增「C:\Pic\新文字文件.txt」之後:
#起始層:C:\Pic
#尋找:新*
PS R:\> (dir C:\Pic\新* -r).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾002
C:\Pic\新文字文件.txt
當使用 -r 參數
C:\Pic\新* 全部都是資料夾:
起始層:「新增資料夾」、「新增資料夾002」
尋找:全部
以外情形:
起始層:C:\Pic
尋找:新*
#C:\Pic裡面的情形
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
#起始層:C:\Pic
#尋找:*
PS R:\> (dir C:\Pic -r -i *).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
C:\Pic\1.jpg
#起始層:「新增資料夾」、「新增資料夾002」、「1.jpg」
# (起始層「資料夾」沒有列出)
#尋找:*
PS R:\> (dir C:\Pic\* -r -i *).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
C:\Pic\1.jpg
#起始層:「新增資料夾」、「新增資料夾002」
# (起始層「資料夾」沒有列出)
#尋找:1*
#沒有列出 C:\Pic\1.jpg
PS R:\> (dir C:\Pic\新* -r -i 1*).FullName
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#新增「新文字文件.txt」之後
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
#起始層:「新增資料夾」、「新增資料夾002」、「新文字文件.txt」
# (起始層「資料夾」沒有列出)
#尋找:1*
#結果:和新增「新文字文件.txt」之前一樣
PS R:\> (dir C:\Pic\新* -r -i 1*).FullName
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
只要有指定 -Include參數,
起始層就是 C:\Pic\新*
不會像只使用-r參數時那樣,有兩種情形
#C:\Pic裡面的情形
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
#用 -ex 過濾之前
#起始層:「新增資料夾」、「新增資料夾002」
# (起始層「資料夾」沒有列出)
#尋找:全部
PS R:\> (dir C:\Pic\新* -r).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
#用 -ex 過濾之後
PS R:\> (dir C:\Pic\新* -r -ex 1*).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\2.jpg
#新增「新文字文件.txt」之後
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
#用 -ex 過濾之前
#起始層:C:\Pic
#尋找:新*
PS R:\> (dir C:\Pic\新* -r).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾002
C:\Pic\新文字文件.txt
#用 -ex 過濾
#起始層:C:\Pic
#尋找:新*
#不會影響起始層
PS R:\> (dir C:\Pic\新* -r -ex 1*).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾002
C:\Pic\新文字文件.txt
-Exclude參數:
純過濾
不會影響起始層
最好只搭配 -Recurse參數 使用
PS R:\> (dir C:\Pic).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
#不搭配 -r 的時候,會難以理解
#第一個命令沒反應,因為C:\Pic 資料夾名稱不是 新*
#-Include檢查名稱有兩處:
# 「資料夾」、「資料夾裡的東西」
#檢查成功,傳回「資料夾裡的東西」
PS R:\> (dir C:\Pic -Include 新*).FullName
PS R:\> (dir C:\Pic\* -Include 新*).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新文字文件.txt
#不搭配 -r 的時候,會難以理解
#它沒有列出C:\Pic\新增資料夾\1.jpg
#因為「新增資料夾」不符合 1*
PS R:\> (dir C:\Pic -Include 1*).FullName
PS R:\> (dir C:\Pic\* -Include 1*).FullName
C:\Pic\1.jpg
PS R:\> (dir C:\Pic -ex *.txt).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
PS R:\> (dir C:\Pic\* -ex *.txt).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
C:\Pic\1.jpg
PS R:\> (dir C:\Pic -ex p*).FullName
PS R:\> (dir C:\Pic\* -ex p*).FullName
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
在根目錄使用,也有問題
問題很多,不如跳過
PS R:\> (dir C:\Pic -r -depth 0 ).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾002
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
#加了 -i參數,就壞了
PS R:\> (dir C:\Pic -r -depth 0 -i *).FullName
C:\Pic\新增資料夾
C:\Pic\新增資料夾\新_子資料夾
C:\Pic\新增資料夾\1.jpg
C:\Pic\新增資料夾\2.jpg
C:\Pic\新增資料夾002
C:\Pic\新增資料夾002\11.jpg
C:\Pic\新增資料夾002\12.jpg
C:\Pic\1.jpg
C:\Pic\新文字文件.txt
萬用字元:
-Filter:
*?
cmd style
-Include:
*?[]
PowerShell style
過濾條件有幾個:
-Filter:1個
例如:dir -filter a*
-Include:多個
例如:dir -r -in a*,b*,c*